home *** CD-ROM | disk | FTP | other *** search
- // =================================================================================
- // SliderDemo.c ©1993-1994 Harold Ekstrom. All rights reserved.
- // =================================================================================
-
- #define rHSlider1 1000
- #define rHSlider2 1001
- #define rHSlider3 1002
- #define rHSlider4 1003
- #define rHSlider5 1004
- #define rHWindow 1000
- #define rVSlider1 1100
- #define rVSlider2 1101
- #define rVSlider3 1102
- #define rVSlider4 1103
- #define rVWindow 1100
- #define rAboutDialog 128
- #define rMenuBar 128
- #define mAppleMenu 128
- #define iAboutItem 1
- #define mFileMenu 129
- #define iQuitItem 1
-
- Boolean gQuit = false;
-
- void
- main( void )
- {
- DialogPtr aboutDialog;
- EventRecord theEvent;
- WindowPtr hWindow;
- WindowPtr vWindow;
- WindowPtr theWindow;
- ControlHandle hSlider1, hSlider2, hSlider3, hSlider4, hSlider5;
- ControlHandle vSlider1, vSlider2, vSlider3, vSlider4;
- ControlHandle theControl;
- short part;
- Point pt;
- short itemHit;
- Handle mBarHnd;
- MenuHandle menuHnd;
- Str255 daName;
- char theChar;
- long choice;
- short menu;
- short item;
- Rect rect;
-
- // Initialize the managers.
- InitGraf( &qd.thePort );
- InitFonts();
- InitWindows();
- InitMenus();
- TEInit();
- InitDialogs( nil );
- InitCursor();
-
- // Install the demo's menubar.
- mBarHnd = GetNewMBar( rMenuBar );
- SetMenuBar( mBarHnd );
- menuHnd = GetMenuHandle( mAppleMenu );
- AppendResMenu( menuHnd, 'DRVR' );
- DrawMenuBar();
-
- // Create a black&white window.
- vWindow = GetNewWindow( rVWindow, nil, (WindowPtr) -1L );
- SetPort( vWindow) ;
- vSlider1 = GetNewControl( rVSlider1, vWindow );
- HiliteControl( vSlider1, 255 );
- vSlider2 = GetNewControl( rVSlider2, vWindow );
- HiliteControl( vSlider2, 255 );
- vSlider3 = GetNewControl( rVSlider3, vWindow );
- HiliteControl( vSlider3, 255 );
- vSlider4 = GetNewControl( rVSlider4, vWindow );
- HiliteControl( vSlider4, 255 );
-
- // Create a color window.
- hWindow = GetNewCWindow( rHWindow, nil, (WindowPtr) -1L );
- SetPort( hWindow) ;
- hSlider1 = GetNewControl( rHSlider1, hWindow );
- hSlider2 = GetNewControl( rHSlider2, hWindow );
- hSlider3 = GetNewControl( rHSlider3, hWindow );
- hSlider4 = GetNewControl( rHSlider4, hWindow );
- hSlider5 = GetNewControl( rHSlider5, hWindow );
-
- // Event loop.
- while( !gQuit ) {
-
- if ( WaitNextEvent( everyEvent, &theEvent, 1, nil ) ) {
-
- switch( theEvent.what ) {
-
- case mouseDown:
-
- // Find the window part clicked on.
- part = FindWindow( theEvent.where, &theWindow );
-
- switch( part ) {
-
- case inDrag:
- // Drag the window.
- rect = (**(GetGrayRgn())).rgnBBox;
- DragWindow( theWindow, theEvent.where, &rect );
- break;
-
- case inContent:
- if ( theWindow != FrontWindow() ) {
-
- // Bring the window to the front.
- SelectWindow( theWindow );
-
- } else {
-
- // Set the port.
- SetPort( theWindow );
-
- // Convert the point to local coordinates.
- pt = theEvent.where;
- GlobalToLocal( &pt );
-
- // Find the control part clicked on (if any).
- part = FindControl( pt, theWindow, &theControl );
- if ( part != 0 ) {
-
- // Track the control. Be sure to pass -1 for the
- // action proc to get default paging.
- TrackControl( theControl, pt, (ControlActionUPP) -1 );
-
- }
- }
- break;
-
- case inMenuBar:
- // Get the menu and item.
- choice = MenuSelect( theEvent.where );
- menu = HiWord( choice );
- item = LoWord( choice );
- switch( menu ) {
- case mAppleMenu:
- if ( item == iAboutItem ) {
- theWindow = FrontWindow();
- SetPort( theWindow );
- if ( theWindow == hWindow ) {
- HiliteControl( hSlider1, 255 );
- HiliteControl( hSlider2, 255 );
- HiliteControl( hSlider3, 255 );
- HiliteControl( hSlider4, 255 );
- HiliteControl( hSlider5, 255 );
- } else {
- HiliteControl( vSlider1, 255 );
- HiliteControl( vSlider2, 255 );
- HiliteControl( vSlider3, 255 );
- HiliteControl( vSlider4, 255 );
- }
- aboutDialog = GetNewDialog( rAboutDialog, nil, (WindowPtr) -1L );
- if ( aboutDialog != nil ) {
- SetDialogDefaultItem( aboutDialog, ok );
- ((GrafPtr)aboutDialog)->txFont = geneva;
- ((GrafPtr)aboutDialog)->txSize = 9;
- itemHit = 0;
- while ( itemHit != ok ) {
- ModalDialog( nil, &itemHit );
- }
- DisposeDialog( aboutDialog );
- }
- SetPort( theWindow );
- if ( theWindow == hWindow ) {
- HiliteControl( hSlider1, 0 );
- HiliteControl( hSlider2, 0 );
- HiliteControl( hSlider3, 0 );
- HiliteControl( hSlider4, 0 );
- HiliteControl( hSlider5, 0 );
- } else {
- HiliteControl( vSlider1, 0 );
- HiliteControl( vSlider2, 0 );
- HiliteControl( vSlider3, 0 );
- HiliteControl( vSlider4, 0 );
- }
- } else {
- GetMenuItemText( GetMenuHandle( mAppleMenu ),
- item, daName );
- OpenDeskAcc( daName );
- }
- break;
-
- case mFileMenu:
- if ( item == iQuitItem ) {
- gQuit = true;
- }
- break;
- }
- HiliteMenu( 0 );
- break;
- }
- break;
-
- case autoKey:
- case keyDown:
- // Get the key.
- theChar = theEvent.message & charCodeMask;
- if ( ( theEvent.modifiers & cmdKey ) != 0 ) {
-
- // Handle the menu command.
- choice = MenuKey( theChar );
- menu = HiWord( choice );
- item = LoWord( choice );
- if ( menu == mFileMenu && item == iQuitItem ) {
- gQuit = true;
- }
-
- }
- break;
-
- case activateEvt:
- // Get the window from the event's message field.
- theWindow = (WindowPtr) theEvent.message;
-
- if ( theEvent.modifiers & activeFlag != 0 ) {
- if ( theWindow == hWindow ) {
- HiliteControl( hSlider1, 0 );
- HiliteControl( hSlider2, 0 );
- HiliteControl( hSlider3, 0 );
- HiliteControl( hSlider4, 0 );
- HiliteControl( hSlider5, 0 );
- } else {
- HiliteControl( vSlider1, 0 );
- HiliteControl( vSlider2, 0 );
- HiliteControl( vSlider3, 0 );
- HiliteControl( vSlider4, 0 );
- }
- } else {
- if ( theWindow == hWindow ) {
- HiliteControl( hSlider1, 255 );
- HiliteControl( hSlider2, 255 );
- HiliteControl( hSlider3, 255 );
- HiliteControl( hSlider4, 255 );
- HiliteControl( hSlider5, 255 );
- } else {
- HiliteControl( vSlider1, 255 );
- HiliteControl( vSlider2, 255 );
- HiliteControl( vSlider3, 255 );
- HiliteControl( vSlider4, 255 );
- }
- }
- break;
-
- case updateEvt:
- // Get the window from the event's message field.
- theWindow = (WindowPtr) theEvent.message;
-
- // Begin updating.
- BeginUpdate( theWindow );
-
- // Update the window's control (the slider).
- DrawControls( theWindow );
-
- // Update text.
- SetPort( theWindow );
- TextFont( geneva );
- TextSize( 9 );
- TextFace( underline + bold );
- if ( theWindow == hWindow ) {
- MoveTo( 147, 15 );
- DrawString( "\pColor" );
- } else if ( theWindow == vWindow ) {
- MoveTo( 66, 15 );
- DrawString( "\pBlack&White" );
- }
-
- // End updating.
- EndUpdate( theWindow );
- break;
- }
- }
- }
- }
-